Imports System.Data
Imports System.Linq

Namespace Helpers
    ''' <summary>
    ''' Clase de ayuda que puede transformar un string en formato json a una tabla dentro de un dataset.
    ''' </summary>
    ''' <remarks></remarks>
    Public Class Json2Dataset

        ''' <summary>
        ''' La funcion que se utiliza para dicha transformacion.
        ''' </summary>
        ''' <param name="json">String en formato json para transformar.</param>
        ''' <param name="abm">Instancia del tipo Abm que se utiliza para obtener el dataset al cual se va a transformar.</param>
        ''' <returns>El dataset completo con los datos que se pasan como parametro.</returns>
        ''' <remarks></remarks>
        Public Shared Function Convert(json As String, abm As JsonAbm) As DataSet
            Dim ds As DataSet
            Dim jObject As Newtonsoft.Json.Linq.JObject
            ds = abm.getDataSet()
            jObject = Newtonsoft.Json.JsonConvert.DeserializeObject(json)
            Dim dtValues As DataTable = Newtonsoft.Json.JsonConvert.DeserializeObject(Of DataTable)(jObject.Value(Of Newtonsoft.Json.Linq.JArray)("data").ToString())
            ds.Tables(0).Merge(dtValues, False, MissingSchemaAction.Ignore)
            Return ds
        End Function

    End Class

End Namespace